//
//  IFJPEGAllDataInterface.h
//  IFJPEGSDK_OBJC
//
//  Created by zsc-onlyyi on 2021/10/13.
//

#import <Foundation/Foundation.h>

#import "IFDefinition.h"

@class IFIRDataInfoData;
@class IFTempDataInfoData;
@class IFVLDataInfoData;
@class IFFactDefaultTempInfo;
@class IFFactRealTimeTempInfo;
@class IFFactDistTempInfo;
@class IFFactStatusTempInfo;
@class IFUserTempInfo;
@class IFCalTempInfo;
@class IFTempMeasureInfo;
@class IFMixParam;
@class IFIRCameraInfo;
@class IFVLCameraInfo;

/*!

@protocol  IFCameraInfoInterface

@abstract 设备信息设置接口set/get

*/


@protocol IFCameraInfoInterface <NSObject>

@optional
/*!
@property manufacturer
@abstract 相机制造商
 */
@property (nonatomic , strong) NSString *manufacturer;
/*!
@property desc
@abstract 相机型号
 */
@property (nonatomic , strong) NSString *desc;
/*!
@property pn
@abstract 设备PN
 */
@property (nonatomic , strong) NSString *pn;
/*!
@property sn
@abstract 设备SN
 */
@property (nonatomic , strong) NSString *sn;
/*!
@property fwVersion
@abstract 固件版本
 */
@property (nonatomic , strong) NSString *fwVersion;
/*!
@property apertureValue
@abstract 光圈值
 */
@property (nonatomic , strong) NSNumber *apertureValue;//float
/*!
@property focalLen
@abstract 焦距
 */
@property (nonatomic , strong) NSNumber *focalLen;//float

@end

/*!

@protocol  IFMixParamInterface

@abstract 融合算法参数设置接口set/get

*/

@protocol IFMixParamInterface <NSObject>

@optional
/*!
@property mixType
@abstract 融合算法
 */
@property (nonatomic , strong) NSNumber *mixType;//uint8_t
/*!
@property correctionAsix
@abstract 配准坐标
 */
@property (nonatomic , strong) NSArray<NSNumber *> *correctionAsix;//float []

@end

/*!

@protocol  IFCalTempInfoInterface

@abstract 测温信息设置接口set/get

*/

@protocol IFCalTempInfoInterface <NSObject>

@optional
/*!
@property tempUnit
@abstract 测温单位
 */
@property (nonatomic , strong) NSNumber *tempUnit;//uint8_t
/*!
@property centerTemp
@abstract 中心温
 */
@property (nonatomic , strong) NSNumber *centerTemp;//uint8_t
/*!
@property maxTemp
@abstract 最高温
 */
@property (nonatomic , strong) NSNumber *maxTemp;//uint8_t
/*!
@property minTemp
@abstract 最低温
 */
@property (nonatomic , strong) NSNumber *minTemp;//uint8_t
/*!
@property tempMeasureNum
@abstract 点、线、框、圆个数
 */
@property (nonatomic , strong) NSNumber *tempMeasureNum;//uint16_t

@end

/*!

@protocol  IFUserTempInfoInterface

@abstract 用户参数设置接口set/get

*/

@protocol IFUserTempInfoInterface <NSObject>

@optional
/*!
@property envTemp
@abstract 环境温度
 */
@property (nonatomic , strong) NSNumber *envTemp;//float
/*!
@property dist
@abstract 距离
 */
@property (nonatomic , strong) NSNumber *dist;//float
/*!
@property ems
@abstract 发射率
 */
@property (nonatomic , strong) NSNumber *ems;//float
/*!
@property hum
@abstract 湿度
 */
@property (nonatomic , strong) NSNumber *hum;//float
/*!
@property refTemp
@abstract 反射温度
 */
@property (nonatomic , strong) NSNumber *refTemp;//float


@end


/*!

@protocol  IFDataInfoInterface

@abstract 原始数据设置接口set/get

*/

@protocol IFDataInfoInterface <NSObject>

@optional

/*!
@property dataSize
@abstract 总大小
 */
@property (nonatomic) NSNumber *dataSize;//uint64_t
/*!
@property dataFormat
@abstract 保存格式
 */
@property (nonatomic , strong) NSNumber *dataFormat;//uint16_t
/*!
@property width
@abstract 宽度
 */
@property (nonatomic , strong) NSNumber *width;//uint16_t
/*!
@property height
@abstract 高度
 */
@property (nonatomic , strong) NSNumber *height;//uint16_t
/*!
@property bitNum
@abstract 位深度
 */
@property (nonatomic , strong) NSNumber *bitNum;//uint8_t
/*!
@property dataInfoReserved
@abstract 保留字段
 */
@property (nonatomic , strong) NSNumber *dataInfoReserved;//uint8_t[]
//保留字段

@end

/*!

@protocol  IFFactDefaultTempInfoInterface

@abstract 默认测温参数设置接口set/get

*/

@protocol IFFactDefaultTempInfoInterface <NSObject>

@optional

@property (nonatomic , strong) NSNumber *ems;//uint8_t
@property (nonatomic , strong) NSNumber *tau;//uint8_t
@property (nonatomic , strong) NSNumber *ta;//uint16_t
@property (nonatomic , strong) NSNumber *tu;//uint16_t
@property (nonatomic , strong) NSNumber *dist;//uint16_t
@property (nonatomic , strong) NSNumber *A0;//int32_t
@property (nonatomic , strong) NSNumber *B0;//int32_t
@property (nonatomic , strong) NSNumber *A1;//int32_t
@property (nonatomic , strong) NSNumber *B1;//int32_t
@property (nonatomic , strong) NSArray *dataInfoReserved;//uint8_t[]

@end

/*!

@protocol  IFFactStatusTempInfoInterface

@abstract 状态信息设置接口set/get

*/

@protocol IFFactStatusTempInfoInterface <NSObject>

@optional

@property (nonatomic , strong) NSNumber *gainStatus;//uint8_t
@property (nonatomic , strong) NSNumber *envCorrectStatus;//uint8_t
@property (nonatomic , strong) NSNumber *distCorrectStatus;//uint8_t
@property (nonatomic , strong) NSNumber *tempMapStatus;//uint8_t
@property (nonatomic , strong) NSArray *dataInfoReserved;//uint8_t[]

@end

/*!

@protocol  IFFactRealTimeTempInfoInterface

@abstract 实时参数

*/


@protocol IFFactRealTimeTempInfoInterface <NSObject>

@optional

@property (nonatomic , strong) NSNumber *sensorTemp;//uint16_t
@property (nonatomic , strong) NSNumber *shutterTemp;//uint16_t
@property (nonatomic , strong) NSNumber *lensTemp;//uint16_t
@property (nonatomic , strong) NSArray *dataInfoReserved;//uint8_t[]


@end

/*!

@protocol  IFFactCalculateTempInfoInterface

@abstract 标定数据

*/

@protocol IFFactCalculateTempInfoInterface <NSObject>

@optional

@property (nonatomic , copy) NSString *distTableVersion;
@property (nonatomic , strong) NSArray<NSNumber *> *distTable;//uint32_t
@property (nonatomic , strong) NSArray<NSNumber *> *nucTTable;//uint16_t
@property (nonatomic , strong) NSNumber *P0;//uint16_t
@property (nonatomic , strong) NSNumber *P1;//int32_t
@property (nonatomic , strong) NSNumber *P2;//int32_t

@end

/*!

@protocol  IFJPEGAllDataInterface

@abstract 数据具柄的基础类

@discussion IJPEG相关的图片数据的设置

*/

@protocol IFJPEGAllDataInterface <NSObject>

@optional

//APP2

/*!
@property ijpegVersion
@abstract 图片格式版本（当前I-JPEG格式版本）
@discussion 数据示例：0.0.1.0
 */
@property (nonatomic , copy) NSString *ijpegVersion;//uint32_t
/*!
@property ijpegSign
@abstract 签名（用来识别是否可以用我司软件二次编辑）
@discussion 数据示例：IJPEG
 */
@property (nonatomic , copy) NSString *ijpegSign;//uint64_t
/*!
@property imageOrgType
@abstract 图片类型（用来查看是否有可见光和温度数据）
@discussion 数据示例：参考IFImageOrgType
 */
@property (nonatomic) IFImageOrgType imageOrgType;//uint8_t
/*!
@property imageDispType
@abstract 显示类型（用来查看当前展示的效果）
@discussion 数据示例：参考IFImageDispType
 */
@property (nonatomic) IFImageDispType imageDispType;//uint8_t
/*!
@property imageRotate
@abstract 旋转角度
@discussion 数据示例：参考IFImageRotate
 */
@property (nonatomic) IFImageRotate imageRotate;//uint8_t
/*!
@property imageMirFlip
@abstract 翻转镜像
@discussion 数据示例：参考IFImageMirFlip
 */
@property (nonatomic) IFImageMirFlip imageMirFlip;//uint8_t
/*!
@property imageColorSwitchable
@abstract 原始伪彩（用来判定是否可伪彩二次切换，部分有损伪彩无法再换）
@discussion 数据示例：参考imageColorSwitchable
 */
@property (nonatomic) IRImageColorSwitchable imageColorSwitchable;//uint8_t
/*!
@property imageCurColor
@abstract 当前伪彩（用来判定是否可伪彩二次切换，部分有损伪彩无法再换）
@discussion 数据示例：1
 */
@property (nonatomic , strong) NSNumber *imageCurColor;//uint16_t
/*!
@property irDataInfo
@abstract 红外数据信息
@discussion 使用参考IFIRDataInfoData
 */
@property (nonatomic , strong) IFIRDataInfoData *irDataInfo;
/*!
@property tempDataInfo
@abstract 温度数据信息
@discussion 使用参考IFTempDataInfoData
 */
@property (nonatomic , strong) IFTempDataInfoData *tempDataInfo;
/*!
@property vlDataInfo
@abstract 可见光图片信息
@discussion 使用参考IFVLDataInfoData
 */
@property (nonatomic , strong) IFVLDataInfoData *vlDataInfo;


//APP3 原始数据
/*!

 @abstract 温度本地资源文件路径

 @discussion 此方法传入原始温度数据设置到ijpeg图片中

 @param filePath  待操作数据资源路径

 */
-(void)setTempOriginDataFilePath:(NSString *)filePath;
/*!

 @abstract 红外数据本地资源文件路径

 @discussion 此方法传入原始红外数据设置到ijpeg图片中

 @param filePath   待操作数据资源路径

 */
-(void)setIrOriginDataFilePath:(NSString *)filePath;
/*!

 @abstract 可见光本地资源文件路径

 @discussion 此方法传入原始可见光数据设置到ijpeg图片中

 @param filePath  待操作数据资源路径

 */
-(void)setVLOriginDataFilePath:(NSString *)filePath;

/*!
@property tempOriginData
@abstract 温度原始数据（NSData）
@discussion 此参数按照NSData类型传入
 */
@property (nonatomic , strong) NSData *tempOriginData;
/*!
@property irOriginData
@abstract 红外原始数据（NSData）
@discussion 此参数按照NSData类型传入
 */
@property (nonatomic , strong) NSData *irOriginData;
/*!
@property vlOriginData
@abstract 可见光原始数据（NSData）
@discussion 此参数按照NSData类型传入
 */
@property (nonatomic , strong) NSData *vlOriginData;


//APP4 出厂测温参数
/*!
@property factDefaultTempInfo
@abstract 默认测温参数
@discussion 使用参考IFFactDefaultTempInfo
 */
@property (nonatomic , strong , readonly) IFFactDefaultTempInfo *factDefaultTempInfo;
/*!
@property factRealTimeTempInfo
@abstract 实时参数
@discussion 使用参考IFFactRealTimeTempInfo
 */
@property (nonatomic , strong , readonly) IFFactRealTimeTempInfo *factRealTimeTempInfo;
/*!
@property factStatusTempInfo
@abstract 状态信息
@discussion 使用参考IFFactStatusTempInfo
 */
@property (nonatomic , strong , readonly) IFFactStatusTempInfo *factStatusTempInfo;
/*!
@property factDistTempInfo
@abstract 标定数据
@discussion 使用参考IFFactDistTempInfo
 */
@property (nonatomic , strong , readonly) IFFactDistTempInfo *factDistTempInfo;

//APP5
/*!
@property userTempInfo
@abstract "用户参数（32字节）"
@discussion 使用参考IFUserTempInfo
 */
@property (nonatomic , strong , readonly) IFUserTempInfo *userTempInfo;
/*!
@property calTempInfo
@abstract "测温信息"
@discussion 使用参考IFCalTempInfo
 */
@property (nonatomic , strong , readonly) IFCalTempInfo *calTempInfo;
/*!
@property tempMessureInfo
@abstract 点、线、框、圆
@discussion 使用参考IFTempMeasureInfo
 */
@property (nonatomic , strong) NSArray<IFTempMeasureInfo *> *tempMessureInfo;

//APP6
/*!
@property mixParam
@abstract 融合算法参数设置
@discussion 使用参考IFMixParam
 */
@property (nonatomic , strong , readonly) IFMixParam *mixParam;

//APP7
/*!
@property irCameraInfo
@abstract 红外设备信息
@discussion 使用参考IFIRCameraInfo
 */
@property (nonatomic , strong , readonly) IFIRCameraInfo *irCameraInfo;
/*!
@property vlCameraInfo
@abstract 可见光设备信息
@discussion 使用参考IFVLCameraInfo
 */
@property (nonatomic , strong , readonly) IFVLCameraInfo *vlCameraInfo;

@end
